﻿/*
 * @author				: Leandro Gimenez
 * @create				: 12/03/2011
 * @last modified		: 12/03/2011
 * @version				: 1.0
 * @description			: Classe Pessoa.FornecedorForm, responsável por manter um fornecedor no sistema
 */


Ext.ns('App.Pessoa');

App.Pessoa.FornecedorForm = Ext.extend(Ext.Window,{
	
	title: 'Manutenção de Fornecedores'
	
	,constructor: function()
	{
		this.addEvents({
			 salvar	: true
			,excluir: true
		});
		
		App.Pessoa.FornecedorForm.superclass.constructor.apply(this, arguments);
	}

	
	
	,initComponent: function(){
		
				
		this.abaDadosPrincipais = {
			title: 'Principal'
			,iconCls: 'aba_fornecedor'
			,items:[
				{
					xtype: 'fieldset'
					, title: 'Dados Pessoais'
					, collapsible: true
					, defaultType: 'textfield'
					, defaults:{
						anchor: '100%'
					}	
					,items: [
						{
							xtype: 'hidden'
							,name:'Pessoa_codigo'
						}					
						,{
						
							xtype: 'hidden'
							,name:'codigo'
							,id:'codigoFornecedor'
						}
						,{
							fieldLabel:'Nome'
							,name:'nome'
							,allowBlank: false
						}
						,{
							fieldLabel:'Razão Social'
							,name:'razaoSocial'
						}
						,{
							fieldLabel:'Site'
							,name:'site'
						}
						,{
							xtype: 'combo'
							,fieldLabel: 'Tipo'
							,name: 'tipo'
							,store: [['PF','Pessoa Física'],['PJ','Pessoa Jurídica']]
							,displayField: 'tipo'
							,valueField: 'codigo'
							,hiddenName: 'tipo'
							,mode: 'local'
							,typeAhead: true
							,triggerAction: 'all'
							,allowBlank: false
						}
						,{
							xtype:'masktextfield'
							,fieldLabel:'CNPJ'
							,name:'cnpj'
							,mask: '99.999.999/9999-99'
							,money: false
							,useMask: true
						}
						,{
							xtype: 'combo'
							,fieldLabel: 'Situação'
							,name: 'situacao'
							,store: [['S','Ativo'],['N','Inativo']]//
							,displayField: 'situacao'
							,valueField: 'codigo'
							,hiddenName: 'situacao'
							,mode: 'local'
							,typeAhead: true
							,triggerAction: 'all'
							,allowBlank: false
						}
					]
				}

			]
			
		}
		
		
		
		this.abaDadosContato = {
			title: 'Dados para contato'
			,iconCls	: 'aba_contato'
			
			
			
			,items:[
				{
					xtype: 'fieldset'
					, title: 'Contato'
					, collapsible: true
					, defaultType: 'textfield'
					, defaults:{
						anchor: '100%'
					}	
					,items: [
						{
							xtype:'masktextfield'
							,fieldLabel:'Tel. Residencial'
							,name:'telefoneResidencial'
							,mask: '(99)9999-9999'
							,money: false
							,useMask: true
						}
						,{
							xtype:'masktextfield'
							,fieldLabel:'Tel. Comercial'
							,name:'telefoneComercial'
							,mask: '(99)9999-9999'
							,money: false
							,useMask: true
						}
						,{
							xtype:'masktextfield'
							,fieldLabel:'Celular'
							,name:'celular'
							,mask: '(99)9999-9999'
							,money: false
							,useMask: true
						}
					
					]
				}	
			]
			
		}
		
		
		this.abaDadosEndereco = {
			title		: 'Dados de Endereço'
	        ,iconCls	: 'aba_endereco'
	        ,items:[
				{
					xtype: 'fieldset'
					, title: 'Endereço'
					, collapsible: true
					, defaultType: 'textfield'
					, defaults:{
						anchor: '100%'
					}	
					,items: [
						{
							fieldLabel:'Logradouro'
							,name:'endLogradouro'
						}
						,{
							fieldLabel:'Número'
							,name:'endNumero'
						}
						,{
							xtype:'masktextfield'
							,fieldLabel:'CEP'
							,name:'endCep'
							,mask: '99999-999'
							,money: false
							,useMask: true
						}
						,{
							fieldLabel:'Bairro'
							,name:'endBairro'
						}
						,{
							fieldLabel:'Cidade'
							,name:'endCidade'
						}
						,{
							xtype: 'combo'
							,fieldLabel: 'Estado'
							,name: 'endEstado'
							,store: uf
							,displayField: 'endEstado'
							,valueField: 'codigo'
							,hiddenName: 'endEstado'
							,mode: 'local'
							,typeAhead: true
							,triggerAction: 'all'
						}
						,{
							fieldLabel:'Complemento'
							,name:'endComplemento'
						}
					
					]
				}	
			]
	    }
		

	    
	    
	    this.abaDadosDocumentos = {
			title: 'Documentos'
			,iconCls: 'aba_documento'
			,items:[
				{	
					xtype: 'fieldset'
					,title: 'Documentos '
					,collapsible: true
					,defaultType: 'textfield'
					,items: [
						{
							xtype: 'container'
							,layout: 'column'
							,defaults: {
								layout: 'form'
							}
							,items:[
							       {
							    	   xtype: 'container'
							    	   ,columnWidth: .5
							    	   ,defaults: {
											width: 200
							    	   }
							    	  
							    	   ,items:[
											{
												xtype: 'textfield'
												,fieldLabel:'Inscrição Estadual'
												,name:'inscricaoEstadual'
												
											}
											,{
												xtype: 'textfield'
												,fieldLabel:'Inscrição Municipal'
												,name:'inscricaoMunicipal'
											}
									   ]
							       }
															      
							]
						
			            }
						
					]
				
				}
			]
		}
			
		
	
		this.tabFornecedor = new Ext.TabPanel({
			renderTo: Ext.getBody()
			,activeItem: 0
			,border: false
			,deferredRender: false
			,plain:true
			,autoScroll: true
			,ref: 'tabFormContato'
			

			,defaults:{
				layout: 'form'
				,labelWidth: 90 
				,defaultType: 'textfield'
				,autoHeight: true
				,bodyStyle: 'padding: 8px'
				,defaults: {
					blankText: 'Este campo é obrigatório'
					,anchor: '100%'
					,maxLengthText: 'Campo com limite de até <b>{0}</b> de caracteres!'
				}
			}
				
			,items: [this.abaDadosPrincipais, this.abaDadosContato, this.abaDadosEndereco, this.abaDadosDocumentos]
		});
		
		
		
	
		
		this.formFornecedor = new Ext.form.FormPanel({
			layout: 'form'
			,border: false
			,items: this.tabFornecedor
		});
		
		Ext.apply(this, {
			width: 730
			,height: 450
			,modal:true
			,layout: 'fit'
			,closeAction:'hide'
			,constrain	: true
			,maximizable: true
			,items: this.formFornecedor
			,buttons:[
				{
					text: 'Salvar'
					, iconCls: 'bt_salvar'
					, scope	: this
					, handler: function(){
						if(Ext.getCmp('codigoFornecedor').getValue() !=  ""){
							this.alteraRegistro();
						}else{
							this.insereRegistro();
						}
					}
				 }
				
				,{
					text: 'Cancelar'
					, iconCls: 'bt_cancelar'
					, scope	: this
					, handler: this.confimaCancelamento
				}
			]
		});
		
		App.Pessoa.FornecedorForm.superclass.initComponent.call(this);
	}
	
	,setaDados: function(objetoFornecedor){
		this.formFornecedor.form.setValues(objetoFornecedor);
		//Ext.getCmp('codigo').setValue(codigoFornecedor);
	}
	
	,show: function(){
		App.Pessoa.FornecedorForm.superclass.show.apply(this,arguments);
		this.tabFornecedor.setActiveTab(0);
	}
	
	,resetForm: function(){
		this.formFornecedor.form.reset();
	}
	
	
	,insereRegistro: function(button){
		
		var form = this.formFornecedor.getForm();		
		
		if(form.isValid())
		{
			this.params = this.formFornecedor.form.getValues(true);
			//this.params += "&action=inserir";
		
		
			this.loaderTarget = button;
			Ext.ux.Loader.start({sender: button, waitingText: 'Salvando...'});

			Ext.Ajax.request({
				url: baseURL + '/service/index.php?controller=FornecedorController&service=inserir',
				success:  function(result){
					var objRetorno = Ext.decode(result.responseText);
					
					if(objRetorno.success == true){
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'success'
						});
					   
						Ext.ux.Loader.stop(this.loaderTarget);
						this.hide();
						Ext.getCmp('pessoaFornecedor').carregaGrid();
						
					}else{
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'error'
						});
					}
				},

				
				params: this.params,
				scope: this			
			});                    
		}else{
			Ext.ux.MessageBox.flash({
				msg: 'Preencha todos os campos obrigatorios',
				type: 'warning',
				pause: 3
			});
		}
		
	}
	
	,alteraRegistro: function(button){
		
		var form = this.formFornecedor.getForm();
		
		
		if(form.isValid())
		{
			this.params = this.formFornecedor.form.getValues(true);
			//this.params += "&action=alterar";
			
			this.loaderTarget = button;
			Ext.ux.Loader.start({sender: button, waitingText: 'Salvando...'});

			Ext.Ajax.request({
				url: baseURL + '/service/index.php?controller=FornecedorController&service=alterar',
				success:  function(result){
					var objRetorno = Ext.decode(result.responseText);
					
					if(objRetorno.success == true){
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'success'
						});
					   
						Ext.ux.Loader.stop(this.loaderTarget);
						this.hide();
						Ext.getCmp('pessoaFornecedor').carregaGrid();
						
					}else{
						Ext.ux.MessageBox.flash({
							msg: objRetorno.message,
							type: 'error'
						});
					}
					
				},
				
				params: this.params,
				scope: this			
			});                    
		}else{
			Ext.ux.MessageBox.flash({
				msg: 'Preencha todos os campos obrigatórios',
				type: 'warning',
				pause: 3
			});
		
		}
		
	}	

	
	,confimaCancelamento: function(){
		Ext.MessageBox.confirm('Confirmação de cancelamento','Realmente deseja cancelar essa operação?', function(btn)
		{

			if(btn == 'yes')
			{
				this.hide();
			}
		}, this);

	}
	
});

Ext.reg('pessoaFornecedorForm',App.Pessoa.FornecedorForm);